package cn.edu.jxnu.leetcode;

/**
 * 
	数组区间和
	
	303. Range Sum Query - Immutable (Easy)
	
	Given nums = [-2, 0, 3, -5, 2, -1]
	
	sumRange(0, 2) -> 1
	sumRange(2, 5) -> -1
	sumRange(0, 5) -> -3
 * @author 梦境迷离.
 * @time 2018年6月18日
 * @version v1.0
 */
public class Leetcode_303_Interval {

	private int[] sums;

	public void NumArray(int[] nums) {
		sums = new int[nums.length];
		for (int i = 0; i < nums.length; i++) {
			sums[i] = i == 0 ? nums[0] : sums[i - 1] + nums[i];
		}
	}

	/**
	 * 求区间 i ~ j 的和，可以转换为 sum[j] - sum[i-1]，其中 sum[i] 为 0 ~ i 的和。
	 */
	public int sumRange(int i, int j) {
		return i == 0 ? sums[j] : sums[j] - sums[i - 1];
	}
}
